﻿using Coldairarrow.Entity.Interface;
using NetTopologySuite.Mathematics;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using static Coldairarrow.Business.Interface.EC_ReqDTO_SyncOrder;

namespace Coldairarrow.Business.Interface
{

    public class EC_ReqDTO_SyncOrder
    {
        public string sign { get; set; }
        public long timestamp { get; set; }
        public string biz_content { get; set; }


        public class Biz_Content
        {
            /// <summary>
            /// 操作类型，ADD：新增、EDIT：更新
            /// </summary>
            public string action_type { get; set; }





            /// <summary>
            /// 单头数据：biz_content.order 部分可更新（不需要更新可不传）
            /// </summary>
            public Order order { get; set; } = new Order();

            public class Order
            {
                /// <summary>
                /// 平台代码，如：b2c
                /// </summary>
                public string platform { get; set; }
                /// <summary>
                /// 订单类型，sale：正常销售订单，resend：重发订单，line：线下订单
                /// </summary>
                public string order_type { get; set; }
                /// <summary>
                /// 参考号
                /// </summary>
                public string reference_no { get; set; }
                /// <summary>
                /// 账号，通过 用户->获取平台账号列表(getUserAccountList)接口获取数据
                /// </summary>
                public string user_account { get; set; }
                /// <summary>
                /// 整个订单(包括明细)金额的币种
                /// </summary>
                public string currency { get; set; }
                /// <summary>
                /// 买家ID
                /// </summary>
                public string buyer_id { get; set; }
                /// <summary>
                /// 买家名称
                /// </summary>
                public string buyer_name { get; set; }
                /// <summary>
                /// 仓库id ，审核时必须，通过基础数据-》获取所有仓库（订单相关）getWarehouseForOrder获取可更新
                /// </summary>
                //public string warehouse_id { get; set; }
                /// <summary>
                /// 仓库运输方式 ，审核时必须，通过 基础数据-》获取仓库与运输方式映射（订单相关）getWarehouseShippingForOrder或者基础数据-》获取运输方式（订单相关）getShippingMethodForOrder获取可更新
                /// </summary>
                //public string shipping_method { get; set; }
                /// <summary>
                /// 平台运输方式代码 可更新
                /// </summary>
                //public string shipping_method_platform { get; set; }
                /// <summary>
                /// 平台创建时间
                /// </summary>
                public string date_create_platform { get; set; }
                /// <summary>
                /// 付款时间 可更新
                /// </summary>
                public string platform_paid_date { get; set; }
                /// <summary>
                /// 平台运费（买家支付）可更新
                /// </summary>
                public string ship_fee { get; set; }
                /// <summary>
                /// 买家邮箱 可更新
                /// </summary>
                public string buyer_mail { get; set; }
                /// <summary>
                /// 付订单站点
                /// </summary>
                public string site { get; set; }
                /// <summary>
                /// 买家留言可更新
                /// </summary>
                public string order_desc { get; set; }
                /// <summary>
                /// paypal交易ID可更新
                /// </summary>
                public string paypal_transaction_id { get; set; }
                /// <summary>
                /// 交易ID可更新
                /// </summary>
                public string transaction_id { get; set; }
                /// <summary>
                /// 订单状态 
                ///新增订单：支持 状态 0:已废弃,4:已发货,2:待发货审核(默认状态) - 传其他值无效的
                ///更新订单：
                ///订单状态（全平台的适用，但仅限系统内支持的状态转换 -见表订单可转变的状态）可更新
                /// </summary>
                public string order_status { get; set; }
                /// <summary>
                /// 折扣值
                /// </summary>
                public string discount { get; set; }
                /// <summary>
                /// 折扣值扣减逻辑，0：不扣减订单金额，仅做折扣值展示；1：订单交易额扣减折扣值；2：订单运费扣减折扣值；3.折扣值不扣减订单金额，但是算入利润详情中
                /// </summary>
                //public string discount_deduction_method { get; set; }
                /// <summary>
                /// 订单付款方式（支持的平台shopee daraz aliexpress magento shopify lazada）
                /// </summary>
                public string payment_method { get; set; }
                /// <summary>
                /// 订单自定义类型名称
                /// </summary>
                //public string custom_order_type_name { get; set; }
                /// <summary>
                /// 跟踪号，仅支持待发货审核和问题件
                /// </summary>
                public string shipping_method_no { get; set; }
                /// <summary>
                /// 面单base64文件流内容
                /// </summary>
                //public string face_base64 { get; set; }
                /// <summary>
                /// 面单类型，默认pdf
                /// </summary>
                public string face_type { get; set; }
                /// <summary>
                /// 销售额可更新（不需要更新可不传）注意1、创建订单时（action_type=ADD）由明细中对应的单价*数量累计 - 此字段不可用
                /// 2、更新订单时（action_type=EDIT）当order_details单明细存在时优先取对应的unit_price* qty累加值
                /// </summary>
                public string subtotal { get; set; }
                /// <summary>
                /// 交易费可更新（不需要更新可不传） 注意1、创建订单时（action_type=ADD）由明细中对应的单个交易费*数量累计 - 此字段不可用
                /// 2、更新订单时（action_type=EDIT）当order_details单明细存在时优先取对应的unit_final_value_fee* qty累加值 （orderDetails存在并不为空但是unit_final_value_fee不存在是 默认unit_final_value_fee = 0）
                /// </summary>
                //public string finalvaluefee { get; set; }
                /// <summary>
                /// 手续费可更新（不需要更新可不传） 注意1、创建订单时（action_type=ADD）由明细中对应的单个手续费*数量累计 - 此字段不可用
                ///2、更新订单时（action_type=EDIT）当order_details单明细存在时优先取对应的unit_transaction_price* qty累加值 （orderDetails存在并不为空但是unit_transaction_price不存在是 默认unit_transaction_price = 0）
                /// </summary>
                public string platform_fee { get; set; }

                /// <summary>
                /// 其他费用可更新（不需要更新可不传） 注意1、创建订单时（action_type=ADD）又明细中对应的单个其他费用* 数量累计 - 此字段不可用
                ///2、更新订单时（action_type=EDIT）当order_details单明细存在时优先取对应的unit_other_fee* qty累加值 （orderDetails存在并不为空但是unit_other_fee不存在是 默认unit_other_fee = 0）
                /// </summary>
                public string other_fee { get; set; }
                /// <summary>
                /// 平台补贴费
                /// </summary>
                public string seller_rebate { get; set; }
                /// <summary>
                /// 最晚发货时间（只支持b2c 平台 ） 支持更新（覆盖式关系） -不更新可以不传 。格式（YYYY-mm-dd HH:ii:ss 2021-05-13 11:52:20）
                /// </summary>
                public string platform_latest_ship_date { get; set; }

            }
            /// <summary>
            /// 订单明细：biz_content.order_details 可更新（不需要更新可不传，更新方式为覆盖）注意订单已审核仓配（订单状态为，3：待发货，5：缺货，4：已发货）不支持更新
            /// </summary>
            public List<Order_Details> order_details { get; set; } = new List<Order_Details>();

            public class Order_Details
            {
                /// <summary>
                /// 销售sku
                /// </summary>
                public string product_sku { get; set; }
                /// <summary>
                /// 单价
                /// </summary>
                public string unit_price { get; set; }
                /// <summary>
                /// 销售sku 数量
                /// </summary>
                public int product_sku_qty { get; set; }
                /// <summary>
                /// 产品名称
                /// </summary>
                public string product_title { get; set; }
                /// <summary>
                /// 产品url
                /// </summary>
                public string product_url { get; set; }
                /// <summary>
                /// 跟踪明细id，产品明细唯一标识
                /// </summary>
                //public string ref_item_id { get; set; }
                /// <summary>
                /// 产品明细对应transaction_id
                /// </summary>
                //public string op_ref_tnx { get; set; }
                /// <summary>
                /// 单个交易费
                /// </summary>
                //public string unit_final_value_fee { get; set; }
                /// <summary>
                /// 单个手续费
                /// </summary>
                //public string unit_transaction_price { get; set; }
                /// <summary>
                /// 单个其他费用
                /// </summary>
                //public string unit_other_fee { get; set; }
                /// <summary>
                /// 产品备注
                /// </summary>
                //public string order_remark { get; set; }
                /// <summary>
                /// 平台原始订单号
                /// </summary>
                public string platform_order_code { get; set; }
                /// <summary>
                /// 产品产地 仅限eBay、速卖通（shoplazza、tiktok标发要用到）
                /// </summary>
                //public string ref_item_location { get; set; }
                /// <summary>
                /// 产品是否发货 0：发 1：不发；默认为0
                /// </summary>
                //public string action { get; set; }
                /// <summary>
                /// 速卖通订单子订单序号，用于订单标发
                /// </summary>
                //public string sub_trade_order_index { get; set; }
                /// <summary>
                /// 商品定制信息内容（amazon平台）
                /// </summary>
                //public string properties { get; set; }

            }
            /// <summary>
            /// 订单地址：biz_content.order_address 可更新（不需要更新可不传）注意订单已审核仓配（订单状态为，3：待发货，5：缺货，4：已发货）不支持更新 
            /// </summary>
            public Order_Address order_address { get; set; } = new Order_Address();

            public class Order_Address
            {
                /// <summary>
                /// 收件人名称
                /// </summary>
                public string name { get; set; }
                /// <summary>
                /// 国家二字码
                /// </summary>
                public string country_code { get; set; }
                /// <summary>
                /// 城市名称
                /// </summary>
                public string city_name { get; set; }
                /// <summary>
                /// 邮编
                /// </summary>
                public string postal_code { get; set; }
                /// <summary>
                /// 地址第一行
                /// </summary>
                public string line1 { get; set; }
                /// <summary>
                /// 地址第二行
                /// </summary>
                public string line2 { get; set; }
                /// <summary>
                /// 地址第三行
                /// </summary>
                public string line3 { get; set; }
                /// <summary>
                /// 区
                /// </summary>
                public string district { get; set; }
                /// <summary>
                /// 州或省
                /// </summary>
                public string state { get; set; }
                /// <summary>
                /// 门牌号
                /// </summary>
                public string doorplate { get; set; }
                /// <summary>
                /// 电话
                /// </summary>
                public string phone { get; set; }
                /// <summary>
                /// 公司名称
                /// </summary>
                public string company { get; set; }
            }
            /// <summary>
            /// 属性：biz_content.order_property 可更新（不需要更新可不传）
            /// </summary>
            public Order_Property order_property { get; set; } = new Order_Property();

            public class Order_Property
            {
                /// <summary>
                /// 客服备注
                /// </summary>
                public string customer_service_note { get; set; }
                /// <summary>
                /// 收件人税号
                /// </summary>
                public string tax_number { get; set; }
                /// <summary>
                /// 收件人ioss（订单已经同步到仓配状态不允许更新-- 订单状态为 3:待发货,4:已发货,6:缺货 不允许更新）
                /// </summary>
                public string ioss { get; set; }
                /// <summary>
                /// 订单备注 （仅针对amazon平台）
                /// </summary>
                public string amazon_order_note { get; set; }
                /// <summary>
                /// 定制订单备注 （仅针对amazon平台
                /// </summary>
                public string amazon_customized_order_note { get; set; }
                /// <summary>
                /// 收件人ID
                /// </summary>
                public string consignee_id { get; set; }
            }
            /// <summary>
            /// 订单附件（不需要更新可不传，更新方式为覆盖 ）
            /// </summary>
            public Order_Attachment order_attachment { get; set; } = new Order_Attachment();

            public class Order_Attachment
            {
                /// <summary>
                /// 附件类型附件支持文件扩展名gif、jpg、jpeg、png、pdf、xls、xlsx、doc、docx
                /// </summary>
                public string type { get; set; }
                /// <summary>
                /// 附件名称
                /// </summary>
                public string name { get; set; }
                /// <summary>
                /// 附件内容 （base64文件流）
                /// </summary>
                public string content { get; set; }
            }
        }

    }
}
